Crate rp2040_hal

source ·
Expand description

HAL for the RP2040 microcontroller

This is an implementation of the embedded-hal traits for the RP2040 microcontroller

NOTE This HAL is still under active development. This API will remain volatile until 1.0.0

Crate features

  • chrono - Modifies some RTC access functions to use chrono types instead of a rp2040-hal specific DateTime type
  • critical-section-impl - critical section that is safe for multicore use
  • defmt - Implement defmt::Format for several types.
  • disable-intrinsics - Disable automatic mapping of language features (like floating point math) to ROM functions
  • eh1_0_alpha - Support alpha release of embedded-hal
  • rom-func-cache - Memoize(cache) ROM function pointers on first use to improve performance
  • rt - Minimal startup / runtime for Cortex-M microcontrollers
  • rom-v2-intrinsics - This enables ROM functions for f64 math that were not present in the earliest RP2040s
  • rp2040-e5 - This enables a fix for USB errata 5: USB device fails to exit RESET state on busy USB bus. Only required for RP2040 B0 and RP2040 B1, but it also works for RP2040 B2 and above
  • rtic-monotonic - Implement rtic_monotonic::Monotonic based on the RP2040 timer peripheral

Re-exports

Modules

  • Analog-Digital Converter (ADC)
  • Clocks (CLOCKS)
  • Direct memory access (DMA).
  • General Purpose Input and Output (GPIO)
  • Inter-Integrated Circuit (I2C) bus
  • Multicore support
  • Programmable IO (PIO) See Chapter 3 of the datasheet for more details.
  • Phase-Locked Loops (PLL)
  • Prelude
  • Pulse Width Modulation (PWM)
  • Subsystem Resets
  • Functions and data from the RPI Bootrom.
  • Ring Oscillator (ROSC)
  • Real time clock functionality
  • Single Cycle Input and Output (SIO)
  • Serial Peripheral Interface (SPI)
  • Synchronous Serial Interface (SSI)
  • Timer Peripheral
  • Module supporting type-level programming
  • Universal Asynchronous Receiver Transmitter (UART)
  • Universal Serial Bus (USB)
  • Interrupt vector table utilities
  • Watchdog
  • Crystal Oscillator (XOSC)

Macros

  • Helper macro to give meaningful names to GPIO pins

Attribute Macros

  • Attribute to declare the entry point of the program